#include <etcd/Client.hpp>
#include <etcd/KeepAlive.hpp>
#include <etcd/Response.hpp>

#include <iostream>
#include <thread>
int main()
{
    etcd::Client etcd_host("http://127.0.0.1:2379");
    // 实例化客户端对象
    etcd::Client client(etcd_host);
    // 获取租约保活对象--伴随着创建一个指定有效时长的租约
    // 租约相当于client与etcd签订了房租租约，并且规定了有效时长。一旦超时，etcd会自动删除租约（也就是把客户端标记为失活）
    auto keep_alive = client.leasekeepalive(3).get();
    // 获取租约id
    auto lease_id = keep_alive->Lease();

    // 向etcd新增数据
    auto resp1 = client.put("/service/usr", "127.0.0.1:8080", lease_id).get();
    if (resp1.is_ok() == false)
    {
        std::cout << "put失败" << resp1.error_message() << std::endl;
        return -1;
    }
    std::cout <<resp1.value().as_string()<< "可以提供"<<resp1.value().key()<< "服务"<< std::endl;
    auto resp2 = client.put("/service/usr", "127.0.0.1:9090").get();//不带id的就是永久的
    if (resp2.is_ok() == false)
    {
        std::cout << "put失败" << resp2.error_message() << std::endl;
        return -1;
    }
    std::cout <<resp2.value().as_string()<< "可以提供"<<resp2.value().key()<< "服务"<< std::endl;

    std::this_thread::sleep_for(std::chrono::seconds(10));
    return 0;
}
